Gaussian noise generators are employed in a wide variety of applications, including circuit design and testing. For example, one step in the design of semiconductor chips for digital communications systems is the simulation of the encoding/decoding circuits of the system. The physical communications system includes a transport channel to transport encoded information between the encoder and decoder circuits. The transport channel, which may be any type of communications channel, introduces Gaussian noise into the information being transmitted. As a result, the decoder receives a digital signal that represents the encoded digital signal and noise.
FIG. 1 illustrates a basic digital communication system comprising an information source 10, encoder 12, transport channel 14 and decoder 16. Information source 10 generates messages containing information to be transmitted. Encoder 12 converts the message into a sequence of bits in the form of a digital signal S that can be transmitted over transport channel 14. During the transmission over transport channel 14 the original signal S is subjected to noise. Decoder 16 receives a signal S′ which represents the original signal S and the noise nS, S′=S+nS, where nS is a Gaussian noise with zero mean and variance σ2.
One approach to simulation of encoder/decoder hardware does not address Gaussian noise at all. Instead, the actual physical transport channel is used to quantify the noise without performing a hardware evaluation of the Gaussian random variable. Another approach, useful for various types of noise, creates a pseudo-random Gaussian noise generator using an inverse function. Examples of pseudo-random Gaussian noise generators are described in U.S. Pat. Nos. 3,885,139 and 4,218,749.
One basic pseudo-random generator Uk is a logical circuit having k outputs, where k=1, 2, 3, . . . . On each clock cycle generator Uk generates some integer value at its outputs. The output value can be one of 0, 1, . . . , 2k−1, and the probability P that the output will be any given one of these values is constant and is equal to 2−k. For example, for any given clock cycle, the probability that generator Uk will provide an output having an integer value I is P(I)=2−k, where 0≦I≦2k−1.